Fast Fourier transform method and inverse fast Fourier transform method

ABSTRACT

First, at step S 1 , i=0 is set. At step S 2 , data comprising M samples is fetched. At step S 3 , an M-point DFT is applied to the data fetched at step S 2  above. At step S 4 , an obtained y(k) is multiplied by a twist coefficient w(i, k). The result is placed in y(k). At step S 5 , the value in y(k) is overwritten to an array x which contains original data. The above processing is repeated N/M times through steps S 6  and S 7  until all the input data is processed. At step S 9 , an FFT with N/M (=2 n ) points is performed within the range of 0≦k&lt;M. Finally, at step S 12 , a sort is performed.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates to a fast Fourier transform method and aninverse fast Fourier transform method which conventionally use 2^(n) (2to the nth power) points and are incapable of an FFT using otherspecified number of points.

2. Prior Art

A conventional fast Fourier transform (FFT) has a restriction that thenumber of points N must be N=2^(n). Otherwise, it has been impossible toperform a fast operation of discrete Fourier transform (DFT) by using anexisting apparatus.

BRIEF SUMMARY OF THE INVENTION

Conventionally, a fast Fourier transform method and an inverse fastFourier transform method are incapable of FFT and IFFT using N=M×2^(n)(M is an odd number) for input data. It is therefore an object of thepresent invention to provide a fast Fourier transform method and aninverse fast Fourier transform method of enabling such FFT and IFFT.

For solving the above problem, a fast Fourier transform method accordingto the present invention is characterized by inputting complex numberdata of M×2^(n) points in which M is an odd number and n is an integer,applying a fast Fourier transform to this input data, and outputtingcomplex number data of M×2^(n) points.

This fast Fourier transform method applies specified processing to theinput data, performs a 2^(n)-point fast Fourier transform in a regionwhich is split into M portions, and outputs a result of M×2^(n)-pointdiscrete Fourier transform.

In the fast Fourier transform method, the specified preprocessing firstsplits the input data, performs an M-point discrete Fourier transformfor the split data, and then performs a multiply operation of theobtained M-point discrete Fourier transform coefficient.

The fast Fourier transform method uses trigonometric function's symmetryto decrease an operation amount when finding a discrete Fouriertransform coefficient by applying an M-point discrete Fourier transformto the split data.

For solving the above problem, an inverse fast Fourier transform methodaccording to the present invention inputs complex number data of M×2^(n)points in which M is an odd number and n is an integer, applies aninverse fast Fourier transform to this input data, and outputs thecomplex number data of M×2^(n) points.

The inverse fast Fourier transform method applies specifiedpreprocessing to the input data, applies a 2^(n)-point inverse fastFourier transform in a region which is split into M portions, andoutputs a result of an M×2^(n)-point inverse discrete Fourier transform.

In the inverse fast Fourier transform method, the specifiedpreprocessing first splits the input data, performs an M-point inversediscrete Fourier transform for split data, and then performs a multiplyoperation of the obtained M-point inverse discrete Fourier transformcoefficient.

In the inverse fast Fourier transform method, the specifiedpreprocessing uses trigonometric function's symmetry to decrease anoperation amount when finding an inverse discrete Fourier transformcoefficient by applying an M-point inverse discrete Fourier transform tothe split data.

It becomes possible to provide an FFT with N=M×2^(n) (M is an oddnumber) points which has been infeasible on a conventional apparatus.When a fast FFT apparatus is available, using this apparatus minimizes adevelopment cost compared creating a new apparatus.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING

FIG. 1 is a flowchart for implementing an FFT with N=M×2^(n) points (Mis an odd number);

FIG. 2 schematically shows operations described by the flowchart in FIG.1;

FIG. 3 shows positional relationship between array data and acorresponding index; and

FIG. 4 is a flowchart for fast DFT computation.

DETAILED DESCRIPTION OF THE INVENTION

First of all, the following describes the FFT principle requisite forthe fast Fourier transform method and the inverse fast Fourier transformmethod according to the present invention.

The discrete Fourier transform (DFT) is used for finding a Fouriercoefficient X(k) from given N data samples x(0), x(1), . . . , x(N−1) asshown in the following equation (1): $\begin{matrix}\text{[Formula~~1]} & \quad \\{{{X(k)} = {{\sum\limits_{n = 0}^{N - 1}{{x(n)}{\exp\left( {{- j}\quad\frac{2\quad\pi\quad n\quad k}{N}} \right)}\quad k}} = 0}},\quad\ldots\quad,{N - 1}} & (1)\end{matrix}$

When this DFT permits factorizing the total number of data samples Ninto N=N₁N₂, it is possible to express n and k as in the followingequations: [Formula  2] $\left\{ \begin{matrix}{n = {{{\frac{N}{N_{1}}n_{1}} + {\frac{N}{N_{1}N_{2}}n_{2}}} = {{N_{2}n_{1}} + n_{2}}}} \\{k = {{{\frac{N}{N_{1}N_{2}}k_{1}} + {\frac{N}{N_{2}}k_{2}}} = {k_{1} + {N_{1}k_{2}}}}}\end{matrix} \right.$

In these equations are conditioned on: n₁, k₂=0 . . . N₁−1; n₂, k₁=0 . .. N₂−1. The above equation (1) can be expressed with equations (2) and(3) as follows: $\begin{matrix}\text{[Formula~~3]} & \quad \\{{\hat{X}\left( {k_{1},k_{2}} \right)} = {\sum\limits_{{n\quad 2} = 0}^{N_{2} - 1}{\sum\limits_{{n\quad 1} = 0}^{N_{1} - 1}{{x(n)}\exp\left\{ {{- j}\quad\frac{2\quad\pi}{N}\left( {{N_{2}n_{1}} + n_{2}} \right)\left( {k_{1} + {N_{1}k_{2}}} \right)} \right\}}}}} & (2) \\{\quad{= {\sum\limits_{{n\quad 2} = 0}^{N_{2} - 1}{\left\lbrack {\left\{ {\sum\limits_{{n\quad 1} = 0}^{N_{1} - 1}{{x\left( {{N_{2}n_{1}} + n_{2}} \right)}{\exp\left( {{- j}\quad\frac{2\quad\pi\quad n_{1}k_{1}}{N_{1}}} \right)}}} \right\}{\exp\left( {{- j}\quad\frac{2\quad\pi\quad n_{2}k_{1}}{N}} \right)}} \right\rbrack{\exp\left( {{- j}\quad\frac{2\quad\pi\quad n_{2}k_{2}}{N_{2}}} \right)}}}}} & (3)\end{matrix}$

Further, the following equations (4) and (5) yield an equation (6):$\begin{matrix}\text{[Formula~~4]} & \quad \\{{{\hat{x}}_{k\quad 1}\left( n_{2} \right)} = {\sum\limits_{{n\quad}_{1} = 0}^{N_{1} - 1}{{x\left( {{N_{2}n_{1}} + n_{2}} \right)}{\exp\left( {{- j}\quad\frac{2\pi\quad n_{1}k_{1}}{N_{1}}} \right)}}}} & (4) \\{{{\hat{\overset{\bigwedge}{x}}}_{k\quad 1}\left( n_{2} \right)} = {\hat{x}{k_{1}\left( n_{2} \right)}{\exp\left( {{- j}\quad\frac{2\pi\quad n_{2}k_{1}}{N}} \right)}}} & (5)\end{matrix}$ $\begin{matrix}\text{[Formula~~5]} & \quad \\{{{\hat{X}}_{k\quad 1}\left( k_{2} \right)} = {\sum\limits_{{n\quad}_{2} = 0}^{N_{2} - 1}{{{\hat{\overset{\bigwedge}{x}}}_{k\quad 1}\left( n_{2} \right)}{\exp\left( {{- j}\quad\frac{2\pi\quad n_{2}k_{2}}{N_{2}}} \right)}}}} & (6)\end{matrix}$

Assuming that k₁ is a constant, the equation (6) is the DFT with N₂points. Namely, performing the equations (4) and (5) can split theN-point DFT into N₂-point DFTs for the number of N₁. If N₂ can befurther factorized, repeating the above method can split a DFT with themuch smaller number of points. The FFT uses the split method toeffectively perform DFT operations.

The following equation (7) defines an inverse transform, allowing asplit computation in the same manner as the forward transform:$\begin{matrix}\text{[Formula~~6]} & \quad \\{{{x(n)} = {{\sum\limits_{k = 0}^{N - 1}{{X(k)}{\exp\left( {j\quad\frac{2\pi\quad n\quad k}{N}} \right)}\quad k}} = 0}},\quad\ldots\quad,{N - 1}} & (7)\end{matrix}$

The following describes an embodiment of the present invention, namelyan FFT apparatus with the number of points M×2^(n). First, the forwardtransform is described.

It is possible to use the existing FFT with the number of points N=2^(n)for implementing the FFT with the number of points N=M×2^(n), where M isan odd number, by applying M to N₁ and N/M (=2^(n)) to N2. The flowchartin FIG. 1 explains this processing. FIG. 1 and the following descriptionassume an array to be a complex number. The real part and the imaginarypart are substituted during substitution between array elements. Forexample, the representation x′(i)=x(i) denotes that the real part andthe imaginary part of x(i) are assigned to those of x′(i), respectively.Input data comprising N samples are placed in an array x like x(0),x(1), . . . , x(N−1).

The following describes the FFT method with the number of points M×2^nwith reference to FIG. 1. At step S1, i=0 is set. At step S2, M datasamples are fetched into x′(j), where 0≦j<M. At step S3, the aboveoperation (4), namely an M-point DFT, is applied to the data fetched atstep S2. Namely, the following equation (8) is performed:$\begin{matrix}\text{[Formula~~7]} & \quad \\{{y(k)} = {\sum\limits_{n = 0}^{M - 1}{{x^{\prime}(n)}{\exp\left( {{- j}\quad\frac{2\pi\quad n\quad k}{M}} \right)}}}} & (8)\end{matrix}$

The equation (8) can be computed fast by following a procedure asdescribed later. At step S4, the resulting y(k) is multiplied by a twistcoefficient w(i, k) as shown in equation (5). Then, the result is placedin y(k). The twist coefficient w(i, k) is a value defined by thefollowing equation (9): $\begin{matrix}\text{[Formula~~8]} & \quad \\{{w\left( {i,k} \right)} = {\exp\left( {{- j}\quad\frac{2\quad\pi\quad i\quad k}{N}} \right)}} & (9)\end{matrix}$

The twist coefficient w(i, k) becomes 1 when k=0. This operation can beperformed within the range of 1≦k≦M−1.

At step S5, the y(k) value is overwritten to the array x which containsthe original data. It may be preferable to place this value in anotherarray without overwriting.

FIG. 2 schematically shows the operation from steps S1 to S5 in FIG. 1.M data samples are fetched from the array x for every N/M. The DFT ismultiplied by the twist coefficient. The result is returned to thearray. This operation is repeated N/M times through steps S6 and S7until all the input data is processed.

Then, the equation (6) above is performed according to the normal FFT.After step S8, the FFT with N/M (=2^(n)) points is performed within therange of 0≦k≦M at step S9. The FFT-performed result is returned to theoriginal array to place an intended value in the array x. However, thereis provided relationship between a location where data exists and anactual array index as shown in FIG. 3. After steps S10 and S11 in FIG.1, a sort is performed at step S12 as follows:

[Formula 9]X(iM+k)=x(i+kN/M) (0≦i<N/M, 0≦k<M)

This array X(k) (0≦k<N) will contain a digital Fourier coefficient forx(i).

The following describes an inverse transform. In FIG. 1, the inversetransform is assumed to be IDFT in the following equation using 2 DFTs:[Formula  10]${I\quad D\quad F\quad T\text{(}{y(k)}} = {\sum\limits_{n = 0}^{M - 1}{{x^{\prime}(k)}{\exp\left( {j\quad\frac{2\quad\pi\quad n\quad k}{M}} \right)}}}$

At step S4 in FIG. 1, w(i, k) is defined as in the following equation:[Formula  11]${w\left( {i,k} \right)} = {\exp\left( {j\quad\frac{2\quad\pi\quad i\quad k}{N}} \right)}$

The inverse transform can be computed in the same procedure as for theforward transform by replacing FFT at step S9 in FIG. 1 with IFFT.

The following describes a fast M-point DFT: [Formula  12]${y(k)} = {\sum\limits_{n = 0}^{M - 1}{{x(n)}{\exp\left( {{- j}\quad\frac{2\pi\quad{nk}}{M}} \right)}}}$

An M-point DFT (M is an odd number) indicated in the above-mentionedequation can be fast computed by using the trigonometric function'ssymmetry. When a complex number x(n) (0≦n≦M−1) is defined as in thefollowing equation, y(k) is expressed as the equation (10) below:

[Formula 13]x(n)=x _(r)(n)+jx _(i)(n)[Formula  13] $\begin{matrix}\begin{matrix}{{y(k)} = {\sum\limits_{n = 0}^{M - 1}{{x(n)}{\exp\left( {{- j}\quad\frac{2\quad\pi\quad n\quad k}{M}} \right)}}}} \\{= {\sum\limits_{n = 0}^{M - 1}{\left\{ {{x_{r}(n)} + {j\quad{x_{i}(n)}}} \right\}\left\{ {{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)} - {j\quad{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}} \right\}}}} \\{= {{\sum\limits_{n = 0}^{M - 1}{{x_{r}(n)}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}} + {\sum\limits_{n = 0}^{M - 1}{{x_{i}(n)}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}} + {j\left\{ {{\sum\limits_{n = 0}^{M - 1}{{x_{i}(n)}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}} - {\sum\limits_{n = 0}^{M - 1}{{x_{r}(n)}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} \right\}}}}\end{matrix} & (10)\end{matrix}$

Here, the terms in the equation (10) are replaced by the followingequations (11) through (14): $\begin{matrix}\text{[Formula~~15]} & \quad \\{{Y_{1}(k)} = {\sum\limits_{n = 0}^{M - 1}{{x_{r}(n)}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} & (11)\end{matrix}$ $\begin{matrix}\text{[Formula~~16]} & \quad \\{{Y_{2}(k)} = {\sum\limits_{n = 0}^{M - 1}{{x_{i}(n)}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} & (12)\end{matrix}$ $\begin{matrix}\text{[Formula~~17]} & \quad \\{{Y_{3}(k)} = {\sum\limits_{n = 0}^{M - 1}{{x_{i}(n)}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} & (13)\end{matrix}$ $\begin{matrix}\text{[Formula~~18]} & \quad \\{{Y_{4}(k)} = {\sum\limits_{n = 0}^{M - 1}{{x_{r}(n)}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} & (14)\end{matrix}$

The above-mentioned equation (10) can be written as the equation (15) asfollows:

[Formula 19]y(k)=Y ₁(k)+Y ₂(k)+j(Y ₃(k)−Y ₄(k))  (15)

Under the condition of 1≦n≦M−1, the following equation is formulated:[Formula  20] $\begin{matrix}{{\cos\left( \frac{2\quad{\pi\left( {M - n} \right)}k}{M} \right)} = {\cos\left( {{2\quad\pi\quad k} - \frac{2\quad\pi\quad n\quad k}{M}} \right)}} \\{= {\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}\end{matrix}$ $\begin{matrix}{{\sin\left( \frac{2\quad{\pi\left( {M - n} \right)}k}{M} \right)} = {\sin\left( {{2\quad\pi\quad k} - \frac{2\quad\pi\quad n\quad k}{M}} \right)}} \\{= {- {\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}\end{matrix}$

Accordingly, the above-mentioned equations (11) through (14) can becomputed as the following equations (16) through (19), decreasing anoperational amount: $\begin{matrix}\text{[Formula~~21]} & \quad \\{{Y_{1}(k)} = {{x_{r}(0)} + {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{x_{r}(n)} + {x_{r}\left( {M - n} \right)}} \right\}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}}} & (16)\end{matrix}$ $\begin{matrix}\text{[Formula~~22]} & \quad \\{{Y_{2}(k)} = {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{x_{i}(n)} + {x_{i}\left( {M - n} \right)}} \right\}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} & (17)\end{matrix}$ $\begin{matrix}\text{[Formula~~23]} & \quad \\{{Y_{3}(k)} = {{x_{i}(0)} + {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{x_{i}(n)} + {x_{i}\left( {M - n} \right)}} \right\}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}}} & (18)\end{matrix}$ $\begin{matrix}\text{[Formula~~24]} & \quad \\{{Y_{4}(k)} = {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{x_{r}(n)} + {x_{r}\left( {M - n} \right)}} \right\}{\sin\left( \frac{2\pi\quad n\quad k}{M} \right)}}}} & (19)\end{matrix}$

With respect to k in 1≦k≦(M−1)/2, the following equation (20) isformulated: $\begin{matrix}\text{[Formula~~25]} & \quad \\\begin{matrix}{\left( {M - k} \right) = {\sum\limits_{n = 0}^{M - 1}{{x(n)}{\exp\left( {{- j}\quad\frac{2{{\pi n}\left( {M - k} \right)}}{M}} \right)}}}} \\{= {\sum\limits_{n = 0}^{M - 1}{{x(n)}{\exp\left( {j\quad\frac{2\pi\quad n\quad k}{M}} \right)}}}} \\{= {{\sum\limits_{n = 0}^{M - 1}{{x_{r}(n)}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}} - {\sum\limits_{n = 0}^{M - 1}{{x_{i}(n)}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}} + {j\left\{ {{\sum\limits_{n = 0}^{M - 1}{{x_{i}(n)}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}} + {\sum\limits_{n = 0}^{M - 1}{{x_{r}(n)}{\sin\left( \frac{2\pi\quad n\quad k}{M} \right)}}}} \right\}}}} \\{= {{Y_{1}(k)} - {Y_{2}(k)} + {j\left\{ {{Y_{3}(k)} + {Y_{4}(k)}} \right\}}}}\end{matrix} & (20)\end{matrix}$

As is apparent from a comparison between the equations (15) and (20),y(k) is found by partially computing Y₁(k), Y₂(k), Y₃(k), and Y₄(k). Itis possible to find y(M−k) just from add/sub operations using thatpartial computation. When k=0, the following equation is formulated:[Formula  26] $\begin{matrix}{{y(0)} = {\sum\limits_{n = 0}^{M - 1}{{x(n)}{\exp(0)}}}} \\{= {\sum\limits_{n = 0}^{M - 1}{x(n)}}}\end{matrix}$

This equation makes it apparent that just the summation can implementcomputation.

According to the above description, it is understood that the flowchartin FIG. 4 summarizes fast computation for the M-point DFT.

First, y(0)=x(0)+x(1) . . . x(M−1) is computed. Then the followingoperations (a) and (b) are repeated for k in 1≦k≦(M−1)/2. The operation(a) finds Y₁(k), Y₂(k), Y₃(k), and Y₄(k) according to the equations (16)through (19). The operation (b) uses a value found in (a) and furtherfinds y(k) and y(M−k) according to the equations (15) and (20).

Similarly, the above-mentioned fast computation can be applied to anIFFT as shown in the following equation: [Formula  27]${\overset{\_}{x}(k)} = {\sum\limits_{n = 0}^{M - 1}{{y(n)}{\exp\left( {j\quad\frac{2\quad\pi\quad n\quad k}{M}} \right)}}}$

There is formulated y(n)=Y_(r)(n)+jy_(i)(n). Under the condition of1≦k≦(M−1)/2, the following equations (21) through (26) are defined:$\begin{matrix}\text{[Formula~~28]} & \quad \\{{X_{1}(k)} = {{y_{r}(0)} + {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{y_{r}(n)} + {y_{r}\left( {M - n} \right)}} \right\}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}}} & (21)\end{matrix}$ $\begin{matrix}\text{[Formula~~29]} & \quad \\{{X_{2}(k)} = {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{y_{i}(n)} + {y_{i}\left( {M - n} \right)}} \right\}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} & (22)\end{matrix}$ $\begin{matrix}\text{[Formula~~30]} & \quad \\{{X_{3}(k)} = {{y_{i}(0)} + {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{y_{i}(n)} + {y_{i}\left( {M - n} \right)}} \right\}{\cos\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}}} & (23)\end{matrix}$ $\begin{matrix}\text{[Formula~~31]} & \quad \\{{X_{4}(k)} = {\sum\limits_{n = 1}^{{({M - 1})}/2}{\left\{ {{y_{r}(n)} + {y_{r}\left( {M - n} \right)}} \right\}{\sin\left( \frac{2\quad\pi\quad n\quad k}{M} \right)}}}} & (24)\end{matrix}$[Formula 32]{overscore (x)}(k)=X ₁(k)−X ₂(k)+j{X ₃(k)+X ₄(k)}  (25)[Formula 33]{overscore (x)}(M−k)=X ₁(k)+X ₂(k)+j{X ₃(k)−X ₄(k)}  (26)

First, x˜(0)=y(0)+y(1) . . . y(M−1) is computed. With respect to k in1≦k≦(M−1)/2, X₁(k) through X₄(k) are found according to the equations(21) through (24). Then, the equations (15) and (20) are used to findx˜(k) and x˜(M−k).

The IFFT can be computed according to the above-mentioned operations.

The following describes an operation amount. Generally, a computerarchitecture affects operation costs of addition, subtraction, andmultiplication of real numbers. To simplify estimation of an operationamount, however, all the operation costs are assumed to be 1. Anoperation cost for adding or subtracting complex numbers is assumed tobe two operations for adding or subtracting real numbers (2 in total).An operation cost for multiplying complex numbers is assumed to be fouroperations for multiplying real numbers and two operations for adding orsubtracting real numbers (6 in total).

Based on this principle of operation costs, the following describes anoperation amount for the above-mentioned fast M-point DFT. FIG. 4 isused for finding an operation amount C_(DFT)(M) for the fast M-pointDFT.

At step S11, k=0 is set. At step S12, add/sub operations for complexnumbers are performed (M−1) times. At step S13, k+1 is performed. Atstep S14, add/sub operations are performed ((M−1)/2×(4M−6)) times andmultiply operations are performed ((M−1)/2×(2M−1)) times for realnumbers. At step S16, add/sub operations are performed for real numbers((M−1)/2×4) times. The above processing is repeated until the conditionof k<(M−1)/2 at step S16 is satisfied.

Accordingly, the following equation is used to find an operation amountC_(DFT)(M) for the fast M-point DFT: [Formula  34] $\begin{matrix}{{C_{DFT}(M)} = {{\left( {M - 1} \right) \times 2} + {{\left( {M - 2} \right)/2} \times \left( {{4M} - 6} \right)} + {{\left( {M - 1} \right)/2} \times \left( {{2M} - 1} \right)} + \quad{{\left( {M - 1} \right)/2} \times 4}}} \\{= {6{M\left( {M - 1} \right)}}}\end{matrix}$

The following describes an operation amount for the M×2^(n)-point FFT.There is no difference between FFT and IFFT with respect to an operationamount. The description below only covers an operation amount for FFT.

First, an operation amount C_(FFT)(N) is found when an N=2^(n)-point FFTis performed with base 2. For obtaining the product with a twistcoefficient, the N=2^(n)-point FFT performs multiply operationsN/2·log₂(N) times for complex numbers, a butterfly operation, and addoperations N·log₂(N) times for complex numbers. The following equationis used for finding C_(FFT)(N): [Formula  35] $\begin{matrix}{{C_{FFT}(N)} = {{6 \times \frac{N}{2}\log_{2}N} + {2 \times N\quad{\log_{2}(N)}}}} \\{= {5N\quad{\log_{2}(N)}}}\end{matrix}$

When an N=M×2^(n)-point FFT is performed according to the method of thepresent invention, the following describes how to find an operationamount C′_(FFT)(N) with reference to FIG. 1.

At step S3 in FIG. 1, an operation amount for N/M×C_(DFT)(M) is foundbecause the DFT is performed N/M times. At step S4, an operation amountfor 6×N/M×(M−1) is found because a multiply operation for complexnumbers is performed (N/M×(M−1)) times. At step S9, an operation amountfor M×C_(FFT)(N/M) is found because an N/M-point FFT is performed Mtimes. Consequently, the following equation is obtained: [Formula  36]$\begin{matrix}{{C_{DFT}^{\prime}(N)} = {{{N/M} \times {C_{DFT}(M)}} + {6 \times {N/M} \times \left( {M - 1} \right)} + {M \times {C_{FFT}\left( {N/M} \right)}}}} \\{= {{{N/M} \times 6{M\left( {M - 1} \right)}} + {6 \times {N/M} \times \left( {M - 1} \right)} + {M \times \quad 5\left( {N/M} \right){\log_{2}\left( {N/M} \right)}}}} \\\left. {= {{6{{N\left( {M^{2} - 1} \right)}/M}} + {5N\quad{\log_{2}\left( {N/M} \right)}}}} \right\}\end{matrix}$

Accordingly, when M is sufficiently smaller than N, it is understoodthat an operation amount for the FFT according to the present inventionalso can be almost at the level of Nlog₂(N).

When operation amounts are compared between the FFT according to thepresent invention and the DFT, the result isC_(DFT)(2560)/C′_(FFT)(2560)=208 given that N=5×2⁹(=2560), for example.The FFT can be computed approximately 200 times faster than the DFT.

For comparing operation amounts between the FFT according to the presentinvention and the conventional base-2 FFT, an increase rate foroperation amounts can be defined as in the following equation:[Formula  37]${R_{FFT}\left( {N,M} \right)} = {100 \times \frac{{C_{FFT}^{\prime}(N)} - {C_{FFT}(N)}}{C_{FFT}(N)}(\%)}$

Actually, it is impossible to apply the function C_(FFT)(N) with thebase-2 FFT operation amount to the value N which is not raised to thesecond power. However, this method is used for effective comparison. Thefollowing table lists R_(FFT)(N, M) values according to combinations ofN and M.

TABLE 1 M = 3 M = 5 M = 7 M = 9 N = M × 64 21.3% 41.3% 61.6% 81.8% N = M× 512 15.2% 30.4% 45.9% 61.6% N = M × 4096 11.9% 24.0% 36.6% 49.4%

This table shows that an increase can be several tens of percentages ifthe value M is not excessively large.

1. A fast Fourier transform method for transforming input complex numberdata of M×2^n points in which M is an odd number other than 1 and n isan integer, where said input complex number data represents a functionsignal in the time domain, the method comprising the steps of: applyinga fast Fourier transform to the input data, and outputting thetransformed complex number data of M×2^n points resulting from saidapplication of the fast Fourier transform, where the output transformedcomplex number data represents a function signal in the frequencydomain.
 2. A fast Fourier transform method for transforming inputcomplex number data of M×2^n points in which M is an odd number otherthan 1 and n is an integer, where said input complex number datarepresents a function signal in the time domain, the method comprisingthe steps of: applying specified preprocessing to said complex data,performing a 2^n-point fast Fourier transform to said preprocessedcomplex data which is split into M portions, and outputting a result ofM×2^n-point discrete Fourier transform where the output resultrepresents a function signal in the frequency domain.
 3. The fastFourier transform method according to claim 2, wherein said specifiedpreprocessing comprises the steps of: splitting said input data intosplit data, performing an M-point discrete Fourier transform to thesplit data, and multiplying a resulting N-point discrete Fouriertransform coefficient by a specified coefficient.
 4. The fast Fouriertransform method according to claim 3, wherein said specifiedpreprocessing uses trigonometric function's symmetry to decrease anoperation amount in calculation of discrete Fourier transformcoefficient by applying n M-point discrete Fourier transform to saidsplit data.
 5. The fast Fourier transform method according to claim 2,wherein said specified preprocessing comprises the steps of: fetchingM-point data in units of 2^n from said input data, applying a discreteFourier transform to the M-point data, multiplying an obtained M-pointdiscrete Fourier transform coefficient by a twist coefficient, andoutputting a multiplication result as the preprocessed data.
 6. Aninverse fast Fourier transform method for transforming input complexnumber data of M×2^n points in which M is an odd number other than 1 andn is an integer, where said input complex number data represents afunction signal in the frequency domain, the method comprising the stepsof: applying an inverse fast Fourier transform to the input data, andoutputting the transformed complex number data of M×2^n points resultingfrom said application of the fast Fourier transform, where the outputtransformed complex number data represents a function signal in the timedomain.
 7. An inverse fast Fourier transform method for transforminginput complex number data of M×2^n points in which M is an odd numberother than 1 and n is an integer, where said input complex number datarepresents a function signal in the frequency domain, the methodcomprising the steps of: applying specified preprocessing to said inputdata, applying a 2^n-point inverse fast Fourier transform to saidpreprocessed complex data which is split into M portions, and outputtinga result of an M×2^n-point inverse discrete Fourier transform where theoutput result represents a function signal in the time domain.
 8. Theinverse fast Fourier transform method according to claim 7, wherein saidspecified preprocessing comprises the steps of: splitting said inputdata into split data, performing an M-point inverse discrete Fouriertransform to the split data, and multiplying a resulting M-point inversediscrete Fourier transform coefficient by a specified coefficient. 9.The inverse fast Fourier transform method according to claim 8, whereinsaid specified preprocessing uses trigonometric function's symmetry todecrease an operation amount in calculation of inverse discrete Fouriertransform coefficient by applying an M-point inverse discrete Fouriertransform to said split data.
 10. The inverse fast Fourier transformmethod according to claim 7, wherein said specified preprocessingcomprises the steps of: fetching N-point data in units of N/M from saidinput data, applying an inverse discrete Fourier transform to theM-point data, multiplying an obtained M-point inverse discrete Fouriertransform coefficient by a twist coefficient, and outputting amultiplication result as the preprocessed data.